/*
package com.jml.spring.aop;


import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.AfterReturning;
import org.aspectj.lang.annotation.AfterThrowing;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.springframework.stereotype.Component;

//切面类
@Aspect
@Component
public class AopLog {

	//会去拦截service包下UserService类中的add方法
	@Before("execution(* com.jml.spring.aop.service.UserService.add(..))")
	public void before(){
		System.out.println("前置通知执行....");
	}

	//后置通知
	@After("execution(* com.jml.spring.aop.service.UserService.add(..))")
	public void after(){
		System.out.println("后置通知执行....");
	}

	// 运行通知
	@AfterReturning("execution(* com.jml.spring.aop.service.UserService.add(..))")
	public void returning() {
		System.out.println("运行通知执行....");
	}

	// 异常通知
	@AfterThrowing("execution(* com.jml.spring.aop.service.UserService.add(..))")
	public void afterThrowing() {
		System.out.println("异常通知执行....");
	}

	// 环绕通知   在方法前后执行
	@Around("execution(* com.jml.spring.aop.service.UserService.add(..))")
	public void around(ProceedingJoinPoint proceedingJoinPoint) throws Throwable {
		System.out.println("在执行方法前 环绕通知开始执行....");
		//如果调用方法抛出异常，就不会执行后面的代码，所以在使用事务的时候对于异常不要try，要throw
		proceedingJoinPoint.proceed();
		System.out.println("在执行方法完毕 环绕通知结束执行....");
	}

}
*/
